package com.sinosoft.sinopay.apiservice.batchpay.util;

/**
 * 【 字符串转换工具类 】
 *
 * @author chenzhiheng
 * @version V1.0
 * @date 16/12/22
 */
public class StrTool {

    /**
     * 将字符串转换为Unicode字符串
     *
     * @param strOriginal
     *            String 原串
     * @return String 将原串由GBK编码转换为ISO8859_1(Unicode)编码
     */
    public static String GBKToUnicode(String strOriginal) {
        if (false) {
            if (strOriginal != null) {
                try {
                    if (isGBKString(strOriginal)) {
                        return new String(strOriginal.getBytes("GBK"),
                                "ISO8859_1");
                    } else {
                        return strOriginal;
                    }
                } catch (Exception exception) {
                    return strOriginal;
                }
            } else {
                return null;
            }
        } else {
            // 不可以随意修改这里的返回，否则导致系统存入的数据有问题
            // return unicodeToGBK(strOriginal);
            // logger.debug("Don't unicodeToGBK ......");
            if (strOriginal == null) {
                return "";
            } else {
                return strOriginal;
            }
        }
    }

    /**
     * 判断是否是GBK编码
     *
     * @param tStr
     *            String
     * @return boolean
     */
    public static boolean isGBKString(String tStr) {
        int tlength = tStr.length();
        // Integer t = new Integer(0);
        int t1 = 0;
        for (int i = 0; i < tlength; i++) {
            t1 = Integer.parseInt(Integer.toOctalString(tStr.charAt(i)));
            if (t1 > 511) {
                return true;
            }
        }
        return false;
    }
}
